package com.hongji.lms5xxcommunicator.scanner;

/** 统一的扫描帧契约（上层逻辑只处理这个结构） */
public final class ScanFrame {
    public final long hostNs;     // 主机接收时刻（纳秒）
    public final Long deviceUs;   // 设备时基（微秒，可为空；LMS=帧头解析，PICS=114优先）
    public final double[] xs;     // 可为空（PICS若自带则填；LMS为空→用OPC最近邻补）
    public final double[] ys;     // 必填，长度与 zs 对齐
    public final double[] zs;     // 必填

    public ScanFrame(long hostNs, Long deviceUs, double[] xs, double[] ys, double[] zs) {
        this.hostNs = hostNs;
        this.deviceUs = deviceUs;
        this.xs = xs;
        this.ys = ys;
        this.zs = zs;
    }

    public int size() {
        int nx = (xs != null) ? xs.length : Integer.MAX_VALUE; // 若为 null 视为“无限”，不参与限制
        int ny = (ys != null) ? ys.length : 0;
        int nz = (zs != null) ? zs.length : 0;
        return Math.min(Math.min(nx, ny), nz);
    }
}
